#ifndef __IAM_MATOP_H__
#define __IAM_MATOP_H__

#include "iam_rasterdata.h"

/* Float64 矩阵转置 */
void IAM_MatOp_transpose_F64(const IAM_RasterView_F64 src_mat, IAM_RasterView_F64 dst_mat);

/* Float64 矩阵A的SVD分解, 等效为 matlab 的 [U, S, V] = svd(A, "econ") */
void IAM_MatOp_svd_F64(const IAM_RasterView_F64 A, IAM_RasterData_F64 U, IAM_RasterData_F64 S, IAM_RasterData_F64 V);

/* SVD最小二乘法 */
void IAM_MatOp_lsqsvd_F64(const IAM_RasterView_F64 U, const IAM_RasterView_F64 S, const IAM_RasterView_F64 V, const IAM_RasterView_F64 b, IAM_RasterView_F64 X);

/* SVD最小二乘法 */
void IAM_MatOp_lsq_F64(const IAM_RasterView_F64 A, const IAM_RasterView_F64 b, IAM_RasterView_F64 X);


#endif
